Developing a software application that performs well on one computing platform is a complicated task, but developing an application that performs well on multiple platforms is even more difficult. There are many tasks that must be performed and managed to control the hardware and operating system of a computing platform in order to produce the results desired by the developer, and the ways these tasks are accomplished can vary widely between platforms. There are also expectations of application behavior that vary between platforms. For the professional software developer, writing code that correctly performs all the tasks required on different platform and creating a new application that conforms to the expected behavior of those platforms is very time consuming and complicated, despite having the full support of the platform manufacturer. For the hobbyist, student developer, or other programmer outside the manufacturer's circle of approved developers, this aspect of application development is even more challenging.
This is especially true in closed systems, such as game consoles. Game consoles typically allow only “signed” or authenticated games controlled by the manufacturer to execute on such consoles. This restriction may be done for various reasons, including preservation of the business model of maintaining a tightly controlled environment for publishers, prevention of intellectual property piracy, or controlling the potential for cheating. However, there is a burgeoning market of homebrew developers and hobbyists who want to create their own programs for closed systems as well as more open platforms. These developers spend time and effort to hack game consoles in order to allow the running of unsigned code on such consoles. It would be desirable to have a legitimate way for such developers to create their content without having to break into closed systems while still maintaining a level of protection for those systems.
Therefore, what is needed is a way to free developers from having to customize their software for different platforms and operating systems. It would simplify their work greatly if developers could write programs using a standard interface to the operating system, or programming framework, that would allow the program to run on different platforms without customizing the application code to deal with different underlying software or hardware. Such a framework would need to allow developers to interact with the operating systems of various computing devices in the same way, letting the programming framework deal with the differences in underlying code and hardware. The interface would also protect the underlying platform by including checks and validations ensuring that the supplied developer code adheres to the limitations and requirements of the platform. This would free the developer to focus their programming efforts on the creative aspects of their program without having to worry about the more tedious tasks of making the program work with different operating systems and hardware.